package br.com.conciliador.upload.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.conciliador.cadastro.vo.BandeiraVo;
import br.com.conciliador.cadastro.vo.DatasVo;
import br.com.conciliador.cadastro.vo.EstEmpresaVo;
import br.com.conciliador.cadastro.vo.EstLojaVo;
import br.com.conciliador.cadastro.vo.ProdutoVo;
import br.com.r2.util.tipodado.Inteiro;
import br.com.r2.util.tipodado.InteiroLongo;
import br.com.r2.util.tipodado.Moeda;
import br.com.r2.util.tipodado.Texto;

@Entity
@Table(name = "FID_VENDAS")
@Proxy(lazy = true)
public class DetalheArquivoRemessaVendasVo implements Serializable
{

   /**
    * 
    */
   private static final long serialVersionUID = 7350469851217754019L;

   @Id
   @Column(name = "ID")
   @GeneratedValue(generator = "InteiroSequenceGenerator")
   @GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.r2.util.tipodado.hibernate.generator.InteiroSequenceGenerator", parameters = { @Parameter(name = "sequence", value = "FID_VENDAS_ID_SEQ") })
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo codigo;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "HAVCD")
   @Cascade(CascadeType.PERSIST)
   private HeaderArquivoRemessaVendasVo headerVo;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "DIM_DATAVENDA")
   private DatasVo dataVendaVo;

   @Column(name = "NSU")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo nsu;

   @Column(name = "AUTORIZACAO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto autorizacao;

   @Column(name = "PLANO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroUT")
   private Inteiro plano;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "DIM_BANDEIRA")
   private BandeiraVo bandeiraVo;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "DIM_PRODUTO")
   private ProdutoVo produtoVo;

   @Column(name = "VALOR_BRUTO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.MoedaUT")
   private Moeda valor;

   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumn(name = "EST_LOJA")
   private EstLojaVo lojaVo;

   @Column(name = "CAIXA")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto caixa;

   @Column(name = "DADOS_CLIENTE")
   private String dadosCliente;
   
   @Column(name = "EST_EMPRESA")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo estEmpresa;
   
   @Column(name = "ESTABELECIMENTO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto estabelecimento;
   
   public InteiroLongo getCodigo()
   {
      return codigo;
   }

   public void setCodigo(InteiroLongo codigo)
   {
      this.codigo = codigo;
   }

   public DatasVo getDataVendaVo()
   {
      return dataVendaVo;
   }

   public void setDataVendaVo(DatasVo dataVendaVo)
   {
      this.dataVendaVo = dataVendaVo;
   }

   public InteiroLongo getNsu()
   {
      return nsu;
   }

   public void setNsu(InteiroLongo nsu)
   {
      this.nsu = nsu;
   }

   public Texto getAutorizacao()
   {
      return autorizacao;
   }

   public void setAutorizacao(Texto autorizacao)
   {
      this.autorizacao = autorizacao;
   }

   public Inteiro getPlano()
   {
      return plano;
   }

   public void setPlano(Inteiro plano)
   {
      this.plano = plano;
   }

   public BandeiraVo getBandeiraVo()
   {
      return bandeiraVo;
   }

   public void setBandeiraVo(BandeiraVo bandeiraVo)
   {
      this.bandeiraVo = bandeiraVo;
   }

   public ProdutoVo getProdutoVo()
   {
      return produtoVo;
   }

   public void setProdutoVo(ProdutoVo produtoVo)
   {
      this.produtoVo = produtoVo;
   }

   public EstLojaVo getLojaVo()
   {
      return lojaVo;
   }

   public void setLojaVo(EstLojaVo estLojaVo)
   {
      this.lojaVo = estLojaVo;
   }

   public Texto getCaixa()
   {
      return caixa;
   }

   public void setCaixa(Texto caixa)
   {
      this.caixa = caixa;
   }

   public String getDadosCliente()
   {
      return dadosCliente;
   }

   public void setDadosCliente(String dadosCliente)
   {
      this.dadosCliente = dadosCliente;
   }

   public HeaderArquivoRemessaVendasVo getHeaderVo()
   {
      return headerVo;
   }

   public void setHeaderVo(HeaderArquivoRemessaVendasVo headerVo)
   {
      this.headerVo = headerVo;
   }

   public Moeda getValor()
   {
      return valor;
   }

   public void setValor(Moeda valor)
   {
      this.valor = valor;
   }
   
   public InteiroLongo getEstEmpresa()
   {
	   return estEmpresa;
   }
   
   public void setEstEmpresa(InteiroLongo estEmpresa)
   {
	   this.estEmpresa = estEmpresa;
   }

   public Texto getEstabelecimento()
   {
      return estabelecimento;
   }

   public void setEstabelecimento(Texto estabelecimento)
   {
      this.estabelecimento = estabelecimento;
   }
}
